import tkinter as tk

# 二分查找函数
def binary_search(d, s):
    start = 0  # 最低索引位
    end = len(d) - 1  # 最高索引位
    while start <= end:
        # 截取当前数组长度的一半
        mid = (start + end) // 2
        num = d[mid]  # 返回中间值
        if num == s:  # 如果中间值等于要搜索值就表示找到
            return mid
        if num > s:
            # 如果中间值大于要搜索的值，表示在数值较小的数组中，中间索引位-1做为结束位置
            end = mid - 1
        else:
            # 否则就是中间值小于要搜索的值，表示在数值较大的数组中，中间索引位+1做为起始位置
            start = mid + 1
    return -1

# 搜索按钮点击事件处理函数
def search():
    str_value = int(entry.get())  # 获取输入框的值并转换为整数
    size = 10000
    data = list(range(size))  # 生成有序数组
    res = binary_search(data, str_value)
    if res > -1:
        result_label.config(text=f"{str_value}，在第 {res + 1} 行")
    else:
        result_label.config(text="没有找到答案")

# 创建主窗口
root = tk.Tk()
root.title("二分查找")

# 创建标签和输入框
label = tk.Label(root, text="请输入要查找的值:")
label.pack()
entry = tk.Entry(root)
entry.pack()
entry.insert(0, 1000)

# 创建搜索按钮
search_button = tk.Button(root, text="搜索", command=search)
search_button.pack()

# 创建结果显示标签
result_label = tk.Label(root, text="")
result_label.pack()

# 运行主循环
root.mainloop()